#ifndef __IMPRESOR_DE_RESULTADOS_H__
#define __IMPRESOR_DE_RESULTADOS_H__

#include <iostream>
#include <string>

#include "resultado.h"
#include "descriptor_alumno.h"
#include "pila.h"

/**
 * FIXME: Workaround porque C++ no deja poner directo el template en
 *        otro template.
 */
typedef IteradorLista<NodoResultado*> IteradorNodo;

class ImpresorDeResultados{

private:

	/**
	 * Precondiciones: Puntero a NodoResultado valido.
	 * Postcondiciones: Retorna un string con la regla correcta a imprimir
	 *                  teniendo en cuenta su descriptor y su valor.
	 */
	std::string traducirNodoResultado (NodoResultado*);

	/**
	 * Precondiciones: Pila vilida no vacia.
	 * Postcondiciones: Imprime por pantalla, en el orden correcto,
	 *                  la pila de resultados.
	 *                  La pila no se ve modificada.
	 */
	void imprimirPilaDeResultados (Pila<IteradorNodo> &);

public:

	/**
	 * Postcondiciones: Imprime las relaciones encontradas
	 * 					por pantalla.
	 */
	void imprimirResultado (Resultado);

};


#endif /* __IMPRESOR_DE_RESULTADOS_H__ */
